﻿using System;
using System.ComponentModel;
using System.Runtime.InteropServices;

namespace Teigha.Core
{
	public class OdGiSubEntityTraits : OdGiDrawableTraits
	{
		[EditorBrowsable(EditorBrowsableState.Never)]
		public OdGiSubEntityTraits(IntPtr cPtr, bool cMemoryOwn) : base(GlobalsPINVOKE.OdGiSubEntityTraits_SWIGUpcast(cPtr), cMemoryOwn)
		{
			this.swigCPtr = new HandleRef(this, cPtr);
		}

		[EditorBrowsable(EditorBrowsableState.Never)]
		public static HandleRef getCPtr(OdGiSubEntityTraits obj)
		{
			if (obj != null)
			{
				return obj.swigCPtr;
			}
			return new HandleRef(null, IntPtr.Zero);
		}

		~OdGiSubEntityTraits()
		{
			this.Dispose();
		}

		public override void Dispose()
		{
			if (this.swigCPtr.Handle != IntPtr.Zero)
			{
				if (this.swigCMemOwn)
				{
					lock (this.locker)
					{
						if (this.swigCPtr.Handle != IntPtr.Zero && this.swigCMemOwn)
						{
							this.swigCMemOwn = false;
							GlobalsPINVOKE.delete_OdGiSubEntityTraits(this.swigCPtr);
						}
					}
					this.swigCMemOwn = false;
				}
				this.swigCPtr = new HandleRef(null, IntPtr.Zero);
			}
			GC.SuppressFinalize(this);
			base.Dispose();
		}

		public new static OdGiSubEntityTraits cast(OdRxObject pObj)
		{
			MemoryManager memoryManager = MemoryManager.GetMemoryManager();
			MemoryTransaction currentTransaction = memoryManager.GetCurrentTransaction();
			IntPtr p = GlobalsPINVOKE.OdGiSubEntityTraits_cast(OdRxObject.getCPtr(pObj));
			OdGiSubEntityTraits result;
			if (currentTransaction != null)
			{
				currentTransaction.AddObject((OdGiSubEntityTraits)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true));
				result = (OdGiSubEntityTraits)Teigha.Core.Helpers.odrxCreateObjectInternal(p, false);
			}
			else
			{
				result = (OdGiSubEntityTraits)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true);
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new static OdRxClass desc()
		{
			OdRxClass result = (OdRxClass)Teigha.Core.Helpers.odrxCreateObjectInternal(GlobalsPINVOKE.OdGiSubEntityTraits_desc(), false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new virtual OdRxClass isA()
		{
			OdRxClass result = (OdRxClass)Teigha.Core.Helpers.odrxCreateObjectInternal(GlobalsPINVOKE.OdGiSubEntityTraits_isA(this.swigCPtr), false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new virtual OdRxObject queryX(OdRxClass protocolClass)
		{
			OdRxObject result = Teigha.Core.Helpers.odrxCreateObjectInternal(GlobalsPINVOKE.OdGiSubEntityTraits_queryX(this.swigCPtr, OdRxClass.getCPtr(protocolClass)), false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public new static OdGiSubEntityTraits createObject()
		{
			MemoryManager memoryManager = MemoryManager.GetMemoryManager();
			MemoryTransaction currentTransaction = memoryManager.GetCurrentTransaction();
			IntPtr p = GlobalsPINVOKE.OdGiSubEntityTraits_createObject();
			OdGiSubEntityTraits result;
			if (currentTransaction != null)
			{
				currentTransaction.AddObject((OdGiSubEntityTraits)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true));
				result = (OdGiSubEntityTraits)Teigha.Core.Helpers.odrxCreateObjectInternal(p, false);
			}
			else
			{
				result = (OdGiSubEntityTraits)Teigha.Core.Helpers.odrxCreateObjectInternal(p, true);
			}
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual void setColor(ushort color)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setColor(this.swigCPtr, color);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setTrueColor(OdCmEntityColor color)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setTrueColor(this.swigCPtr, OdCmEntityColor.getCPtr(color));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setLayer(OdDbStub layerId)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setLayer(this.swigCPtr, OdDbStub.getCPtr(layerId));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setLineType(OdDbStub lineTypeId)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setLineType(this.swigCPtr, OdDbStub.getCPtr(lineTypeId));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setSelectionMarker(IntPtr selectionMarker)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setSelectionMarker(this.swigCPtr, selectionMarker);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setFillType(OdGiFillType fillType)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setFillType(this.swigCPtr, (int)fillType);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setFillPlane(OdGeVector3d pNormal)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setFillPlane__SWIG_0(this.swigCPtr, OdGeVector3d.getCPtr(pNormal));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setFillPlane()
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setFillPlane__SWIG_1(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setLineWeight(LineWeight lineWeight)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setLineWeight(this.swigCPtr, (int)lineWeight);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setLineTypeScale(double lineTypeScale)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setLineTypeScale__SWIG_0(this.swigCPtr, lineTypeScale);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setLineTypeScale()
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setLineTypeScale__SWIG_1(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setThickness(double thickness)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setThickness(this.swigCPtr, thickness);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setPlotStyleName(PlotStyleNameType plotStyleNameType, OdDbStub plotStyleNameId)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setPlotStyleName__SWIG_0(this.swigCPtr, (int)plotStyleNameType, OdDbStub.getCPtr(plotStyleNameId));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setPlotStyleName(PlotStyleNameType plotStyleNameType)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setPlotStyleName__SWIG_1(this.swigCPtr, (int)plotStyleNameType);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setMaterial(OdDbStub materialId)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setMaterial(this.swigCPtr, OdDbStub.getCPtr(materialId));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setMapper(OdGiMapper pMapper)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setMapper(this.swigCPtr, OdGiMapper.getCPtr(pMapper));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setVisualStyle(OdDbStub visualStyleId)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setVisualStyle(this.swigCPtr, OdDbStub.getCPtr(visualStyleId));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setTransparency(OdCmTransparency transparency)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setTransparency(this.swigCPtr, OdCmTransparency.getCPtr(transparency));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setDrawFlags(uint drawFlags)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setDrawFlags(this.swigCPtr, drawFlags);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setSelectionGeom(bool bSelectionFlag)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setSelectionGeom(this.swigCPtr, bSelectionFlag);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setShadowFlags(OdGiSubEntityTraits.ShadowFlags shadowFlags)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setShadowFlags(this.swigCPtr, (int)shadowFlags);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setSectionable(bool bSectionableFlag)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setSectionable(this.swigCPtr, bSectionableFlag);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual void setSelectionFlags(OdGiSubEntityTraits.SelectionFlags selectionFlags)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setSelectionFlags(this.swigCPtr, (int)selectionFlags);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual ushort color()
		{
			ushort result = GlobalsPINVOKE.OdGiSubEntityTraits_color(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdCmEntityColor trueColor()
		{
			OdCmEntityColor result = new OdCmEntityColor(GlobalsPINVOKE.OdGiSubEntityTraits_trueColor(this.swigCPtr), true);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdDbStub layer()
		{
			IntPtr intPtr = GlobalsPINVOKE.OdGiSubEntityTraits_layer(this.swigCPtr);
			OdDbStub result = (intPtr == IntPtr.Zero) ? null : new OdDbStub(intPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdDbStub lineType()
		{
			IntPtr intPtr = GlobalsPINVOKE.OdGiSubEntityTraits_lineType(this.swigCPtr);
			OdDbStub result = (intPtr == IntPtr.Zero) ? null : new OdDbStub(intPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdGiFillType fillType()
		{
			OdGiFillType result = (OdGiFillType)GlobalsPINVOKE.OdGiSubEntityTraits_fillType(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual bool fillPlane(OdGeVector3d normal)
		{
			bool result = GlobalsPINVOKE.OdGiSubEntityTraits_fillPlane(this.swigCPtr, OdGeVector3d.getCPtr(normal));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual LineWeight lineWeight()
		{
			LineWeight result = (LineWeight)GlobalsPINVOKE.OdGiSubEntityTraits_lineWeight(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual double lineTypeScale()
		{
			double result = GlobalsPINVOKE.OdGiSubEntityTraits_lineTypeScale(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual double thickness()
		{
			double result = GlobalsPINVOKE.OdGiSubEntityTraits_thickness(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual PlotStyleNameType plotStyleNameType()
		{
			PlotStyleNameType result = (PlotStyleNameType)GlobalsPINVOKE.OdGiSubEntityTraits_plotStyleNameType(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdDbStub plotStyleNameId()
		{
			IntPtr intPtr = GlobalsPINVOKE.OdGiSubEntityTraits_plotStyleNameId(this.swigCPtr);
			OdDbStub result = (intPtr == IntPtr.Zero) ? null : new OdDbStub(intPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdDbStub material()
		{
			IntPtr intPtr = GlobalsPINVOKE.OdGiSubEntityTraits_material(this.swigCPtr);
			OdDbStub result = (intPtr == IntPtr.Zero) ? null : new OdDbStub(intPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdGiMapper mapper()
		{
			IntPtr intPtr = GlobalsPINVOKE.OdGiSubEntityTraits_mapper(this.swigCPtr);
			OdGiMapper result = (intPtr == IntPtr.Zero) ? null : new OdGiMapper(intPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdDbStub visualStyle()
		{
			IntPtr intPtr = GlobalsPINVOKE.OdGiSubEntityTraits_visualStyle(this.swigCPtr);
			OdDbStub result = (intPtr == IntPtr.Zero) ? null : new OdDbStub(intPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdCmTransparency transparency()
		{
			OdCmTransparency result = new OdCmTransparency(GlobalsPINVOKE.OdGiSubEntityTraits_transparency(this.swigCPtr), true);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual uint drawFlags()
		{
			uint result = GlobalsPINVOKE.OdGiSubEntityTraits_drawFlags(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual bool selectionGeom()
		{
			bool result = GlobalsPINVOKE.OdGiSubEntityTraits_selectionGeom(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdGiSubEntityTraits.ShadowFlags shadowFlags()
		{
			OdGiSubEntityTraits.ShadowFlags result = (OdGiSubEntityTraits.ShadowFlags)GlobalsPINVOKE.OdGiSubEntityTraits_shadowFlags(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual bool sectionable()
		{
			bool result = GlobalsPINVOKE.OdGiSubEntityTraits_sectionable(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual OdGiSubEntityTraits.SelectionFlags selectionFlags()
		{
			OdGiSubEntityTraits.SelectionFlags result = (OdGiSubEntityTraits.SelectionFlags)GlobalsPINVOKE.OdGiSubEntityTraits_selectionFlags(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual void setSecondaryTrueColor(OdCmEntityColor color)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setSecondaryTrueColor(this.swigCPtr, OdCmEntityColor.getCPtr(color));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual OdCmEntityColor secondaryTrueColor()
		{
			OdCmEntityColor result = new OdCmEntityColor(GlobalsPINVOKE.OdGiSubEntityTraits_secondaryTrueColor(this.swigCPtr), true);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual void setLineStyleModifiers(OdGiDgLinetypeModifiers pLSMod)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_setLineStyleModifiers(this.swigCPtr, OdGiDgLinetypeModifiers.getCPtr(pLSMod));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		public virtual OdGiDgLinetypeModifiers lineStyleModifiers()
		{
			IntPtr intPtr = GlobalsPINVOKE.OdGiSubEntityTraits_lineStyleModifiers(this.swigCPtr);
			OdGiDgLinetypeModifiers result = (intPtr == IntPtr.Zero) ? null : new OdGiDgLinetypeModifiers(intPtr, false);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual uint setupForEntity()
		{
			uint result = GlobalsPINVOKE.OdGiSubEntityTraits_setupForEntity(this.swigCPtr);
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
			return result;
		}

		public virtual void addLight(OdDbStub lightId)
		{
			GlobalsPINVOKE.OdGiSubEntityTraits_addLight(this.swigCPtr, OdDbStub.getCPtr(lightId));
			if (GlobalsPINVOKE.SWIGPendingException.Pending)
			{
				throw GlobalsPINVOKE.SWIGPendingException.Retrieve();
			}
		}

		private object locker = new object();

		private HandleRef swigCPtr;

		[Flags]
		public enum DrawFlags
		{
			kNoDrawFlags = 0,
			kDrawBackfaces = 1,
			kDrawHatchGroup = 2,
			kDrawFrontfacesOnly = 4,
			kDrawGradientFill = 8,
			kDrawSolidFill = 16,
			kDrawNoLineWeight = 32,
			kDrawNoPlotstyle = 128,
			kDrawContourFill = 32768,
			kDisableLayoutCache = 65536,
			kDrawBoundaryForClipping = 131072,
			kDrawBoundaryForClippingDrw = 262144,
			kClipSetIsEmpty = 524288,
			kInternalDrawFlags = 589824,
			kDrawPolygonFill = 1048576,
			kExcludeFromViewExt = 2097152,
			kDrawDgLsPolyWithoutBreaks = 4194304,
			kPolygonProcessing = 8388608,
			kDisableAutoGenerateNormals = 16777216,
			kDisableFillModeCheck = 33554432,
			kDrawUnderlayReference = 67108864,
			kInheritableDrawFlags = 3080352
		}

		public enum ShadowFlags
		{
			kShadowsCastAndReceive,
			kShadowsDoesNotCast,
			kShadowsDoesNotReceive,
			kShadowsIgnore
		}

		public enum SelectionFlags
		{
			kNoSelectionFlags,
			kSelectionIgnore
		}

		public enum SubEntityHints
		{
			kHint2DAttributes = 1,
			kHint3DAttributes,
			kHintAllAttributes,
			kHintDefaultState = 3
		}
	}
}
